﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

namespace _201206QuanLyBanHang.HeThong
{
    public partial class FormXetQuaBieu : Form
    {
        public FormXetQuaBieu()
        {
            InitializeComponent();

            LoadData();
            LoadDataCombo();
            Txt_SoTienDTNho.Text = "0";
            Txt_SoTienDTLon.Text = "0";
            Txt_SoTienNho.Text = "0";
            Txt_SoTienLon.Text = "0";
            Txt_SoLuong.Text = "0";
            Txt_TriGia.Text = "0";
        }
        SQLCommand msql = new SQLCommand();
       // int click = 0;
        int SumKH = 0;
        String chuoigiatri = "";
        
        //Form_Load
        private void FormXetQuaBieu_Load(object sender, EventArgs e)
        {
            LoadData();
            LoadDataCombo();
            
            Txt_SoLuong.Text = "0";
            Txt_TriGia.Text = "0";
            //lbl_MaQBDL.Visible = false;
        }
        //Ham load data
        private void LoadData()
        {
            try
            {
                dgv_QuaBieu.DataSource = msql.LayDataQuaBieu();
                DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn();
                dgv_QuaBieu.Columns.Add(chk);
                chk.HeaderText = "Chọn";
                chk.Name = "chk";
                loadcheck();
                //MessageBox.Show("Load thanh cong");
            }
            catch (Exception)
            {
                MessageBox.Show("Load data bi loi.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }
        //Binding control
        private void BindKhachHangNhanQuaBieu()
        {
            Txt_SoLuong.DataBindings.Clear();
            Txt_SoLuong.DataBindings.Add("Text", dgv_KHNhanQuaBieu.DataSource, "Số Lượng");
            //Txt_TriGia.DataBindings.Clear();
           // Txt_TriGia.DataBindings.Add("Text", dgv_KHNhanQuaBieu.DataSource, "Trị Giá");
            Txt_GhiChu.DataBindings.Clear();
            Txt_GhiChu.DataBindings.Add("Text", dgv_KHNhanQuaBieu.DataSource, "Ghi chú");
            lbl_MaQBDL.DataBindings.Clear();
            lbl_MaQBDL.DataBindings.Add("Text", dgv_KHNhanQuaBieu.DataSource, "ID");
        }
        //Ham Load combo
        private void LoadDataCombo()
        {
            try
            {
                cbo_khuvuc.DataSource = msql.LoadDataComboKhuVuc();
                cbo_khuvuc.DisplayMember = "TENKHUVUC";
                cbo_khuvuc.ValueMember = "MAKHUVUC";
                cbo_khuvuc.SelectedIndex = 0;

                //Dip le
                cbo_DipLe.DataSource = msql.LoadDataComboDL();
                cbo_DipLe.DisplayMember = "TenDipLe";
                cbo_DipLe.ValueMember = "MaDipLe";
                cbo_DipLe.SelectedIndex = 0;
                //Qua tang
                cbo_QuaTang.DataSource = msql.LoadDataComboQT();
                cbo_QuaTang.DisplayMember = "TenQuaBieu";
                cbo_QuaTang.ValueMember = "MaQuaBieu";
                //cbo_QuaTang.DisplayMember = "tenquabieu";
                //cbo_QuaTang.ValueMember = "Maquabieu";
                cbo_QuaTang.SelectedIndex = 0;
            }
            catch (Exception)
            {
                MessageBox.Show("Load data combo bi loi.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }
        //Ham Load Checkbox
        private void loadcheck()
        {
            int tongdong;
            tongdong = dgv_QuaBieu.RowCount - 1;
            int tongcot;
            tongcot = dgv_QuaBieu.ColumnCount - 1;
            if (tongdong > 0)
            {
                for (int i = 0; i < tongdong; i++)
                {
                    dgv_QuaBieu.Rows[i].Cells[tongcot].Value = true;
                    dgv_QuaBieu.Rows[i].Cells[tongcot].Value = false;
                }
            }
        }
        //Ham chon het
        private void loadchecktrue()
        {
            int tongdong;
            tongdong = dgv_QuaBieu.RowCount - 1;
            int tongcot;
            tongcot = dgv_QuaBieu.ColumnCount - 1;
            // MessageBox.Show(tongcot);
            //  MessageBox.Show(tongcot.ToString());
            if (tongdong > 0)
            {
                for (int i = 0; i < tongdong; i++)
                {
                    dgv_QuaBieu.Rows[i].Cells[tongcot].Value = true;
                }
            }
        }
        //Ham bo chon het
        private void loadcheckfalse()
        {
            // LoadData();
            int tongdong;
            tongdong = dgv_QuaBieu.RowCount - 1;

            if (tongdong > 0)
            {
                for (int i = 0; i < tongdong; i++)
                {
                    dgv_QuaBieu.Rows[i].Cells[9].Value = false;

                }
            }
        }
        //Ham Reset lai Datagirdview
        private void reset()
        {

            dgv_QuaBieu.DataBindings.Clear();
            dgv_QuaBieu.DataSource = null;
            dgv_QuaBieu.Columns.Clear();
        }
        //Ham tao lai Checkbox
        private void createcolumn()
        {
            DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn();
            dgv_QuaBieu.Columns.Add(chk);
            // dgv_QuaBieu.Columns.Insert(9, new DataGridViewCheckBoxColumn());
            chk.HeaderText = "Chọn";
            chk.Name = "chk";
        }
        //Remove rows in datagirdview
        private void RemoveRowsdgv()
        {
            int tongcot;
            tongcot = dgv_QuaBieu.ColumnCount - 1;
            for (int i = 0; i < dgv_QuaBieu.Rows.Count; i++)
            {
                if (Convert.ToBoolean(dgv_QuaBieu.Rows[i].Cells[tongcot].Value) == true)
                {
                    dgv_QuaBieu.Rows.RemoveAt(i);
                }
            }
        }
        //Ham Kiem tra ky tu so
        static bool IsNumeric(string numberString)
        {
            foreach (char c in numberString)
            {
                if (!char.IsNumber(c))
                    return false;
            }
            return true;
        }
        //Ham so sanh chuoi
        static bool CompareString(string str1, string str2)
        {
            int result = str1.CompareTo(str2);
            if (result == 0 || result < 0)
            {
                return true;
            }
            return false;
        }
        //Ham lay gia tri checkbox
        private void CheckedBox()
        { 
            String chuoiluu="";
            chuoigiatri = "";
            int tongdong;
            tongdong = dgv_QuaBieu.RowCount - 1;
            int tongcot;
            tongcot = dgv_QuaBieu.ColumnCount - 1;
            //MessageBox.Show(tongcot.ToString ());
            int i = 0;
            if (tongdong > 0)
            {
                for (i = 0; i < tongdong; i++)
                {
                    chuoiluu = dgv_QuaBieu.Rows[i].Cells[tongcot].Value.ToString();
                    if (chuoiluu == "True")
                    {
                        //MessageBox.Show(chuoiluu);
                        chuoigiatri += dgv_QuaBieu.Rows[i].Cells[0].Value.ToString() + ",";
                    }
                }
            }
        }
        //Click cmd_PhanLoai
        private void cmd_PhanLoai_Click(object sender, EventArgs e)
        {
            string ngaydau= dt_datetime1.Text;
            string ngaycuoi=dt_datetime2.Text;
            String[] Strngay1 = ngaydau.Split('/');
            ngaydau = Strngay1[0] + "/" + Strngay1[1] + "/" + Strngay1[2];
            String[] Strngay2 = ngaycuoi.Split('/');
            ngaycuoi = Strngay2[0] + "/" + Strngay2[1] + "/" + Strngay2[2];

            if (IsNumeric(Txt_SoTienDTNho.Text) == false || IsNumeric(Txt_SoTienDTLon.Text) == false || IsNumeric(Txt_SoTienLon.Text) == false || IsNumeric(Txt_SoTienNho.Text) == false)
            { 
                MessageBox.Show("Bạn phải nhập kiểu số và không được để trống!"); 
            }
            else 
            {
                int MaKV = Convert.ToInt32(cbo_khuvuc.SelectedValue);
                int SoTienNhoDoanhThu = Convert.ToInt32(Txt_SoTienNho.Text);
                int SoTienLonDoanhThu = Convert.ToInt32(Txt_SoTienLon.Text);
                int SoTienNhoDauTu = Convert.ToInt32(Txt_SoTienDTNho.Text);
                int SoTienDauTuLon = Convert.ToInt32(Txt_SoTienDTLon.Text);
                try
                {
                    reset();
                    dgv_QuaBieu.DataSource = msql.LocTheoNhieuDieuKien(MaKV, SoTienNhoDoanhThu, SoTienLonDoanhThu, SoTienNhoDauTu, SoTienDauTuLon, ngaydau, ngaycuoi);
                    createcolumn();
                    MessageBox.Show("Phân loại thành công!");
                }
                catch (Exception)
                {
                    MessageBox.Show("Phân loại khách hàng bị lỗi!");
                }
            }
        }
        //Click Check_all
        private void cmd_checkall_Click(object sender, EventArgs e)
        {
            loadchecktrue();
            //chuoigiatri = "";
        }
        //Click Uncheck_all
        private void cmd_bochonhet_Click(object sender, EventArgs e)
        {
            loadcheckfalse();
            //chuoigiatri = "";
        }
        //Click Xet_Qua
        private void cmd_XetQua_Click(object sender, EventArgs e)
        {
            
            CheckedBox();
            if (!string.IsNullOrEmpty(chuoigiatri))
            {
            //Xoa bo dau phay cuoi cung
            String chuoimoi = chuoigiatri.Remove(chuoigiatri.Length - 1, 1);
            String ngaydl = "";
            ngaydl = dt_NgayDl.Text;
            String[] Strngay = ngaydl.Split('/');
            ngaydl = Strngay[0] + "/" + Strngay[1] + "/" + Strngay[2];
            int MaDipLe;
            int MaQuaBieu;
            MaDipLe = Convert.ToInt32(cbo_DipLe.SelectedValue.ToString());
            MaQuaBieu = Convert.ToInt32(cbo_QuaTang.SelectedValue.ToString());
            int SoLuong = int.Parse(Txt_SoLuong.Text);
            int TriGia = int.Parse(Txt_TriGia.Text);
            string GhichuQB = Txt_GhiChu.Text.ToString();
            //Cau hoi xac nhan
               if (MessageBox.Show("Bạn có chắc chắn bạn đã lựa chọn khách hàng tốt nhất chứ!", "Thông báo!", MessageBoxButtons.YesNo) == DialogResult.Yes)
               {
                   msql.InsertIntoQuaBieuDipLe(MaDipLe, MaQuaBieu, ngaydl, SoLuong, TriGia, GhichuQB);
                //Neu co gia tri
                   if (!string.IsNullOrEmpty(chuoimoi))
                   {
                       int MaQBDL= Convert.ToInt32(cbo_QuaTang.SelectedValue);
                       string GhiChu=Txt_GhiChu.Text;
                       //
                       string[] Mang = chuoimoi.Split(',');
                       foreach (string So in Mang)
                       {
                           int i = Convert.ToInt32(So);
                           msql.LuuKhachHangNhanQuaBieu(i, MaQBDL, GhiChu);
                       }
                       RemoveRowsdgv();
                       LoadDataKhachHangNhanQuaBieu();
                       BindKhachHangNhanQuaBieu(); 
                   }
               }
             }
            else
            {
                MessageBox.Show("Bạn phải chọn khách hàng để xét quà biếu");
            }
        }
        //Click tim kiem khach hang
        private void cmd_TimKiemKH_Click(object sender, EventArgs e)
        {
            if (Txt_TenKhachHang.Text == (""))
            {
                MessageBox.Show("Bạn phải nhập tên khách hàng.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                Txt_TenKhachHang.Focus();
            }
            else
            {
                try
                {
                    reset();
                    dgv_QuaBieu.DataSource = msql.TimKiemKhachHang(Txt_TenKhachHang.Text);
                    createcolumn();
                }
                catch (Exception)
                {
                    MessageBox.Show("Tim kiem KH bi loi.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
        }
        //Code xu ly khach hang nhan qua bieu
        private void LoadDataKhachHangNhanQuaBieu()
        {
            int Kq = Convert.ToInt32(chuoigiatri.Length.ToString()) / 2;
            //MessageBox.Show(Kq.ToString());
            SumKH += Kq;
            //MessageBox.Show(SumKH.ToString());
            try 
            {
                dgv_KHNhanQuaBieu.DataSource = msql.LayDataKHNhanQuaBieu(SumKH);
            }
            catch (Exception)
            {
                MessageBox.Show("Load danh sách khách hàng quà biếu bị lỗi");
            }
        }
        //Click cap nhat lai khach hang nhan qua bieu
        private void cmd_CapNhatLai_Click(object sender, EventArgs e)
        {
            String ngaydl = "";
            ngaydl = dt_NgayDl.Text;
            String[] Strngay = ngaydl.Split('/');
            ngaydl = Strngay[0] + "/" + Strngay[1] + "/" + Strngay[2];
            int MaDipLe;
            int MaQuaBieu;
            MaDipLe = Convert.ToInt32(cbo_DipLe.SelectedValue.ToString());
            MaQuaBieu = Convert.ToInt32(cbo_QuaTang.SelectedValue.ToString());
            int MaQbDl = int.Parse(lbl_MaQBDL.Text);
            int SoLuong = int.Parse(Txt_SoLuong.Text);
            int TriGia = int.Parse(Txt_TriGia.Text);
            string GhichuQB = Txt_GhiChu.Text.ToString();
            //MessageBox.Show(TriGia.ToString());
            try
            {
                msql.InsertIntoQuaBieuDipLe(MaDipLe, MaQuaBieu, ngaydl, SoLuong, TriGia, GhichuQB);
                msql.UpdateKhachHangNhanQuaBieu(MaQbDl);
                dgv_KHNhanQuaBieu.DataBindings.Clear();
                dgv_KHNhanQuaBieu.DataSource = null;
                dgv_KHNhanQuaBieu.Columns.Clear();
                int Kq = Convert.ToInt32(chuoigiatri.Length.ToString()) / 2;
                SumKH += Kq;
                dgv_KHNhanQuaBieu.DataSource = msql.LayDataKHNhanQuaBieu(SumKH);
                BindKhachHangNhanQuaBieu();
                MessageBox.Show("Cập nhật khách hàng quà biếu thành công!");
            }
            catch (Exception)
            {
                MessageBox.Show("Cập nhật khách hàng quà biếu thất bại!");
            }
        }
        //click xuat file exel
        private void cmd_XuatExel_Click(object sender, EventArgs e)
        {
            Microsoft.Office.Interop.Excel.ApplicationClass ExcelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
            ExcelApp.Application.Workbooks.Add(Type.Missing);

            for (int i = 1; i < dgv_KHNhanQuaBieu.Columns.Count + 1; i++)
            {
                ExcelApp.Cells[1, i] = dgv_KHNhanQuaBieu.Columns[i - 1].HeaderText;
            }

            for (int i = 0; i < dgv_KHNhanQuaBieu.Rows.Count - 1; i++)
            {
                for (int j = 0; j < dgv_KHNhanQuaBieu.Columns.Count; j++)
                {
                    ExcelApp.Cells[i + 2, j + 1] = dgv_KHNhanQuaBieu.Rows[i].Cells[j].Value.ToString();
                }
            }

            ExcelApp.ActiveWorkbook.SaveCopyAs("D:\\Temp.xlsx");
            ExcelApp.ActiveWorkbook.Saved = true;
            ExcelApp.Quit();
            MessageBox.Show("Xuất File thành công! Tập tin Temp.xls nằm ở disk D");
        }
        //add here

       //end code
    }
}
